<?php

/*
 * 在CongPHP中禁止出现只有Function的脚本文件，如需要使用公共脚本文件，请使用静态类写法替换，并在加载器中进行映射
 * 加载器提供两个函数进行映射注册
 * 
 * psr4AutoLoader::addClass2Dir();
 *
 * 在需要实现迷惑文件名的时候注册，例如类名为 FRAMEWORK 文件名保存为F.php
 * psr4AutoLoader::addClass2File();
 * 
 * 
 */

//开始性能计时
$GLOBALS['time_CongPHP_start'] = microtime(true);


        const _VERSION_PHP = '5.4.0';
        const _VERSION_CONGPHP = "0.0.1";
        const DS = DIRECTORY_SEPARATOR;
        const EXT = ".php";
        const CHAR_SET = "UTF-8";
        const MIRCO_TIME_SLEEP = 100;
        const FRAMEWORK_TIME_LIMIT = 0;



//开始定义框架常量
defined('_DEBUG') ? null : define('_DEBUG', FALSE);
define('DIR_FRAMEWORK', rtrim(__DIR__, DS));
define('DIR_SYSTEM', DIR_FRAMEWORK . DS . "system");

//版本检查
phpversion() < _VERSION_PHP ? _die("CongPHP需要的最低PHP版本应不小于PHP_V_" . _VERSION_PHP, __FILE__, __LINE__) : NULL;
defined('DIR_HTDOCS') ? null : define("DIR_HTDOCS", rtrim(__DIR__, DIRECTORY_SEPARATOR) . "/../htdocs");
defined("DIR_APPLICATION") ? TRUE : _die("你必须在入口文件（一般为Index.php)定义站点应用目录!<br/>例如:  define(\"DIR_APPLICATION\",\"/../application\")", __FILE__, __LINE__);
//开始定义目录常量
define("DIR_APPLICATION_VIEW", DIR_APPLICATION . DS . "view");
require DIR_FRAMEWORK . DS . "AutoLoader" . DS . "loader" . EXT;
//require DIR_FRAMEWORK . DS . "framework" . EXT;
//注册加载器
spl_autoload_register(["psr4AutoLoader", "classLoader"]);
spl_autoload_extensions(EXT);


//注册错误处理函数
_DEBUG == TRUE ? Null : set_error_handler(["framework", "errorHandlel"]);
_DEBUG == TRUE ? Null : set_exception_handler(["framework", "exceptionHandler"]);
//注册停止函数
register_shutdown_function(["framework", "shutdownHandler"]);

//正确显示框架致命错误
function _die($error = "", $file = "", $line = 0) {
    header("HTTP/1.1 404 Not Found");
    header("Status: 404 Not Found");
    header("X-PHP-Framework: CongPHP");
    header("Content-type:text/html;charset=" . CHAR_SET);
    die("\r\n<br/>CongPHP Shutdown:" .
            "\r\n<br/>Stop:" . $error .
            "\r\n<br/>File:" . $file .
            "\r\n<br/>Line:" . $line .
            "\r\n");
}

final class cong extends framework {
    /**
     * Thanks for using CongPHP！
     * 感谢您使用CongPHP!
     * 
     * Happy Every Day ; )
     * 祝您生活愉快; )
     */
}

//Here We Go
cong::main(isset($argv) ? $argv : NULL);
